#!-*-coding: utf-8-*-
"""
用户类
"""
import time
from dbutil import *


class User:
    def __init__(self, user_name, db_util):
        self.__user_name = user_name
        self.__user_login_time = time.time()
        self.__last_update_time = self.__user_login_time
        self.__db_util = db_util
        self.__user_online_time = self.__db_util.get_user_online_time(self.__user_name)
        self.__is_user_online = True

    def __str__(self):
        self.update_user_online_time()
        res = "user_name:" + self.__user_name + \
              ", user_online_time:" + str(self.__user_online_time)
        return res

    def __del__(self):
        # 意外掉线时, 进行账号下线操作
        if self.__is_user_online:
            self.off_line()

    def off_line(self):
        """
        desc:   用户下线对应的逻辑操作
        param   空
        return: 空
        """
        self.update_user_online_time()
        self.__is_user_online = False

    def get_info(self):
        """
        desc:   获取用户信息
        param   空
        return: 空
        """
        return self.__str__()

    def get_user_name(self):
        """
        desc:   获取用户名
        param   空
        return: 空
        """
        return self.__user_name

    def get_online_time(self):
        """
        desc:   获取在线时间
        param   空
        return: 空
        """
        delta_time = time.time() - self.__user_login_time
        return self.__user_online_time + delta_time

    def update_user_online_time(self):
        """
        desc:   更新用户在线时间, 用户下线时, 自动更新在线时间
        param   空
        return: 空
        """
        delta_time = time.time() - self.__last_update_time  # 计算当前登录的时间
        self.__last_update_time = time.time()
        total_user_online_time = self.__user_online_time + delta_time
        self.__user_online_time = total_user_online_time
        self.__db_util.update_user_online_time(self.__user_name, total_user_online_time)


if __name__ == "__main__":
    db = DbUtil("user.db")
    u = User("netease1", db)
    print(u.get_info())
    time.sleep(10)
    print(u)
